Skip to content

feat: add AAC YAML support, replace Node.js CLI#1508

Merged
jaceksan merged 2 commits intomasterfrom
jacek/working
Apr 1, 2026
Merged

feat: add AAC YAML support, replace Node.js CLI#1508
jaceksan merged 2 commits intomasterfrom
jacek/working

Conversation

@jaceksan
Copy link
Copy Markdown
Contributor

@jaceksan jaceksan commented Apr 1, 2026

Summary

Add native support for Analytics-as-Code (AAC) YAMLs in the Python SDK, replacing the experimental Node.js-based gdc CLI with a pure Python implementation using the gooddata-code-convertors WASM package.

  • New aac.py module with all conversion functions (datasets, metrics, visualizations, dashboards, plugins, attribute hierarchies) exposed programmatically
  • Rewritten gdc CLI: no npm/Node.js dependency, reads gooddata.yaml directly
  • Config alignment: SDK understands VSCode plugin config fields (workspace_id, data_source, source_dir)
  • Extended CatalogWorkspaceService with load_and_put_aac_workspace and get_and_store_aac_workspace
  • AIDA validation with auto-fix support via validate_python.sh script
  • 24 tests covering conversions, format detection, config parsing, and CLI

Test plan

  • 24 unit tests pass (conversions, format detection, config, CLI)
  • Manual test: create AAC project with gooddata.yaml + analytics/ dir, run gdc deploy/clone
  • Verify gooddata-code-convertors WASM package installs correctly on CI

JIRA: DX-326
risk: low

@jaceksan jaceksan requested review from hkad98, lupko and pcerny as code owners April 1, 2026 11:30
@jaceksan jaceksan enabled auto-merge April 1, 2026 11:35
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 1, 2026

Codecov Report

❌ Patch coverage is 65.91760% with 91 lines in your changes missing coverage. Please review.
✅ Project coverage is 78.13%. Comparing base (35605f6) to head (50f5c4f).

Files with missing lines Patch % Lines
...data-sdk/src/gooddata_sdk/catalog/workspace/aac.py 78.84% 33 Missing ⚠️
...ckages/gooddata-sdk/src/gooddata_sdk/cli/deploy.py 43.90% 23 Missing ⚠️
...ages/gooddata-sdk/src/gooddata_sdk/cli/gdc_core.py 44.82% 16 Missing ⚠️
...ackages/gooddata-sdk/src/gooddata_sdk/cli/clone.py 31.81% 15 Missing ⚠️
...-sdk/src/gooddata_sdk/catalog/workspace/service.py 42.85% 4 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1508      +/-   ##
==========================================
+ Coverage   77.32%   78.13%   +0.80%     
==========================================
  Files         227      228       +1     
  Lines       14768    14926     +158     
==========================================
+ Hits        11420    11662     +242     
+ Misses       3348     3264      -84     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

jaceksan added 2 commits April 1, 2026 15:18
Add native support for Analytics-as-Code (AAC) YAMLs in the Python SDK,
replacing the experimental Node.js-based gdc CLI with a pure Python
implementation using the gooddata-code-convertors WASM package.

- New aac.py module with individual conversion functions and workspace-level
  load/store for all supported AAC types (datasets, metrics, visualizations,
  dashboards, plugins, attribute hierarchies)
- Rewritten gdc CLI: no npm/Node.js dependency, reads gooddata.yaml directly
- Config alignment: SDK now understands VSCode plugin config fields
  (workspace_id, data_source, source_dir)
- Extended CatalogWorkspaceService with load_and_put_aac_workspace and
  get_and_store_aac_workspace methods
- 24 tests covering conversions, format detection, config parsing, and CLI

JIRA: DX-326
risk: low
Add validate_python.sh wrapper script with --auto-fix and --scope support,
following the gdc-nas pattern. Update AIDA validation registry and policy
to use the new script with external_json processor.

Pre-commit scope runs: format-fix, lint-fix, types (no tests).
Pre-push scope runs: format-fix, lint-fix, types, test.

Auto-fix mode uses make format-fix and make lint-fix targets to
automatically resolve ruff formatting and import ordering issues.

JIRA: DX-326
risk: nonprod
@jaceksan jaceksan force-pushed the jacek/working branch 2 times, most recently from 23dca63 to 50f5c4f Compare April 1, 2026 13:19
@jaceksan jaceksan merged commit 49ea0d5 into master Apr 1, 2026
12 of 13 checks passed
@jaceksan jaceksan deleted the jacek/working branch April 1, 2026 13:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants